<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="root"></div>

  <script src="../js/react.development.js"></script>
  <script src="../js/react-dom.development.js"></script>
  <script src="../js/babel.min.js"></script>
  <script type="text/babel">
    /*
      类组件：
      1. 继承 React.Component
      2. 必须重写 render 函数，render 函数需要返回一个 jsx
    */
    // 1. 创建类式组件
    class MyComponent extends React.Component {
      render() {
        // render 函数内的 this 指向当前组件实例
        console.log(this)
        // 如果 `render` 无返回值，则会报错: MyComponent(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.
        return <h2>我是用类式组件，示用于【复杂组件】的定义</h2>
      }
    }
    // 2. 将组件渲染到页面上
    ReactDOM.render(<MyComponent />, document.getElementById('root'))

    /*
      执行了ReactDOM.render(<MyComponent />, ...)之后，发生了什么？
        1. React 解析组件标签，找到了 MyComponent 组件
        2. 发现组件是类式组件，随后使用 new 关键字创建组件的实例，并通过该实例调用到原型上的 render 方法
        3. 将render 返回的虚拟 DOM 转为真实 DOM，随后呈现在页面上
    */
  </script>
</body>
</html>